package com.itheima.d9_generics_attention;

import java.math.BigDecimal;
import java.util.ArrayList;
public class Test {
    public static void main(String[] args) {
        // 目标：理解泛型的注意事项。
        // 1、泛型是工作在编译阶段的，一旦程序编译成class文件，class文件中就不存在泛型了，这就是泛型擦除。
        //到反射学习的时候可以验证
        //即便是一个存储字符串类型的集合，也可以存入任意类型的数据
        ArrayList<String> list = new ArrayList<>();
        list.add("Hello");
        //list.add(new Car());// 编译阶段泛型起到类型检查的作用，除了String不能放进去了
        //到了反射知识学习，可以存入任意类型的数据。！！！

        // 2、泛型不支持基本数据类型，只能支持对象类型（引用数据类型）。
        //ArrayList<int> list2 = new ArrayList<>();
        //如果想要存储基本类型数据，需要将泛型定义为基本类型对应的包装类型（引用类型）
        /*
        基本类型：
            byte    short   int     long    float       double      char       boolean
        包装类型（引用类型）：
            Byte    Short   Integer Long    Float      Double      Character   Boolean
        基本类型可以和包装类型之间自动转换。
         */
        //存储int类型的数据，就应该使用Integer指定泛型
        ArrayList<Integer> list3 = new ArrayList<>();
        list3.add(100);
        list3.add(200);//基本类型数据100会自动变成包装类型的对象

    }
}

class Car{}